package cn.b.sky.mes.cm.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import cn.b.sky.mes.cm.model.WorkCenter;
import cn.b.sky.mes.cm.model.WorkUnit;
import cn.b.sky.mes.cm.model.condition.WorkCenterCondition;

public interface WorkCenterDao {

  /**
   * 
   * <strong>Title : selectAllWorkCenter<br></strong>
   * <strong>Description : </strong>获取工厂级别的工作中心<br> 
   * <strong>Create on : 2015-10-12 下午7:42:54<br></strong>
   * <p>
   * @param siteCode
   * @param lockFlag 锁定标志，为null则查出全部
   * @return
   * List<WorkCenter>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> selectAllWorkCenter(@Param("siteCode") String siteCode, @Param("lockFlag") Integer lockFlag);

  /**
   * 
   * <strong>Title : getWorkCenterByPK<br></strong>
   * <strong>Description : </strong>根据主键siteCode和workCenterCode查询工作中心<br> 
   * <strong>Create on : 2015-9-24 下午1:49:24<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCode
   * @return
   * WorkCenter
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public WorkCenter getWorkCenterByPK(@Param("siteCode") String siteCode, @Param("workCenterCode") String workCenterCode);

  /**
   * 
   * <strong>Title : insertWorkCenter<br></strong>
   * <strong>Description : </strong>保存<br> 
   * <strong>Create on : 2015-9-24 下午1:50:11<br></strong>
   * <p>
   * @param workCenter
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void insertWorkCenter(WorkCenter workCenter);

  /**
   * 
   * <strong>Title : updateWorkCenter<br></strong>
   * <strong>Description : </strong>修改<br> 
   * <strong>Create on : 2015-9-24 下午1:50:02<br></strong>
   * <p>
   * @param workCenter
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void updateWorkCenter(WorkCenter workCenter);

  /**
   * 
   * <strong>Title : deleteWorkCenter<br></strong>
   * <strong>Description : </strong>删除<br> 
   * <strong>Create on : 2015-9-24 下午2:36:33<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCode
   * void
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public void deleteWorkCenter(@Param("siteCode") String siteCode, @Param("workCenterCode") String workCenterCode);

  /**
   * 
   * <strong>Title : selectWorkCenterByCondition<br></strong>
   * <strong>Description : </strong>根据条件查找<br> 
   * <strong>Create on : 2015-9-24 下午3:59:01<br></strong>
   * <p>
   * @param workCenter
   * @return
   * List<WorkCenter>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> selectWorkCenterByCondition(WorkCenter workCenter);

  /**
   * 
   * <strong>Title : getWorkCentersListByProcessCode<br></strong>
   * <strong>Description : </strong>询工艺下面的工作中,订单下达分解使用<br> 
   * <strong>Create on : 2015-10-12 下午7:52:06<br></strong>
   * <p>
   * @param processCode
   * @param processRev
   * @param siteCode
   * @return
   * List<WorkCenter>
   * @throws 
   * @author lidapeng<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getWorkCentersListByProcessCode(@Param("processCode") String processCode,
      @Param("siteCode") String siteCode, @Param("processRev") String processRev);

  /**
   * 
   * <strong>Title : selectWorkUnitByWorkCenter<br></strong>
   * <strong>Description : </strong>获得工作中心下所有未锁定工作单元<br> 
   * <strong>Create on : 2015-10-8 下午01:59:52<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCode
   * @return
   * List<WorkUnit>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkUnit> selectWorkUnitByWorkCenter(@Param("siteCode") String siteCode,
      @Param("workCenterCode") String workCenterCode);

  /**
   * <strong>Title : getWorkCenterSuggest<br></strong>
   * <strong>Description : </strong>工作中心查找带回查询<br> 
   * <strong>Create on : 2015年10月22日 上午9:42:11<br></strong>
   * <p>
   * @param workCenter
   * void
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getWorkCenterSuggest(WorkCenterCondition workCenter);

  /**
   * <strong>Title : selectWorkUnitByWorkCenter<br></strong>
   * <strong>Description : </strong>条件查询工作中心列表<br> 
   * <strong>Create on : 2015年11月18日 下午5:00:04<br></strong>
   * <p>
   * @param condition
   * @return
   * List<WorkCenter>
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  public List<WorkCenter> getWorkCenterListByCondition(WorkCenterCondition condition);

  /**
   * 
   * <strong>Title : getWorkCenterLookUp<br></strong>
   * <strong>Description : </strong>根据hr 权限查询工作中心列表<br> 
   * <strong>Create on : 2016-4-6 下午1:25:28<br></strong>
   * <p>
   * @param condition
   * @return
   * List<WorkCenter>
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<WorkCenter> getWorkCenterLookUp(WorkCenterCondition condition);

  /**
   * 
   * <strong>Title : getWorkCenterLookUpCount<br></strong>
   * <strong>Description : </strong>查询 有hr权限 的工作中心数量<br> 
   * <strong>Create on : 2016-4-7 上午9:17:18<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int getWorkCenterLookUpCount(WorkCenterCondition condition);

  /**
   * 
   * <strong>Title : getWorkCenterByPKandPermission<br></strong>
   * <strong>Description : </strong>根据siteCode,workCenterCode,userCode查询 有权限的工作中心<br> 
   * <strong>Create on : 2016-4-25 下午6:46:08<br></strong>
   * <p>
   * @param siteCode
   * @param workCenterCode
   * @return
   * WorkCenter
   * @throws 
   * @author ZiQiang.Zhao<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人	|	修改日期	|	修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  WorkCenter getWorkCenterByPKandPermission(@Param("siteCode") String siteCode,
      @Param("workCenterCode") String workCenterCode, @Param("userCode") String userCode);
}
